{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true,
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [],
   "source": [
    "#1.读取log ,设置列名2.判断并删除重复无用数据 3.将日期设置为索引\n",
    "#4.分析一天之内没分钟，小时的数据 5. 分析周末非周末的数据\n",
    "# id 自增字段 \n",
    "# api api对应的url \n",
    "# count 单位时间内被访问的次数 \n",
    "# res_time_sum 响应时间总和(毫秒) \n",
    "# res_time_min 最小响应时间 \n",
    "# res_time_max 最大响应时间 \n",
    "# res_time_avg 平均值 \n",
    "# interval 采样间隔时间(秒) \n",
    "# created_at 创建日志时间 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "outputs": [
    {
     "data": {
      "text/plain": "   2019162542  /front-api/bill/create  8  1057.31   88.75  177.72  132.00  60  \\\n0      162644  /front-api/bill/create  5   749.12  103.79  240.38   149.0  60   \n1      162742  /front-api/bill/create  5   845.84  136.31  225.73   169.0  60   \n2      162808  /front-api/bill/create  9  1305.52   90.12  196.61   145.0  60   \n3      162943  /front-api/bill/create  3   568.89  138.45  232.02   189.0  60   \n4      162967  /front-api/bill/create  5   521.28   80.64  126.17   104.0  60   \n\n   2018-11-01 00:00:07  \n0  2018-11-01 00:01:07  \n1  2018-11-01 00:02:07  \n2  2018-11-01 00:03:07  \n3  2018-11-01 00:04:07  \n4  2018-11-01 00:05:07  ",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>2019162542</th>\n      <th>/front-api/bill/create</th>\n      <th>8</th>\n      <th>1057.31</th>\n      <th>88.75</th>\n      <th>177.72</th>\n      <th>132.00</th>\n      <th>60</th>\n      <th>2018-11-01 00:00:07</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>162644</td>\n      <td>/front-api/bill/create</td>\n      <td>5</td>\n      <td>749.12</td>\n      <td>103.79</td>\n      <td>240.38</td>\n      <td>149.0</td>\n      <td>60</td>\n      <td>2018-11-01 00:01:07</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>162742</td>\n      <td>/front-api/bill/create</td>\n      <td>5</td>\n      <td>845.84</td>\n      <td>136.31</td>\n      <td>225.73</td>\n      <td>169.0</td>\n      <td>60</td>\n      <td>2018-11-01 00:02:07</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>162808</td>\n      <td>/front-api/bill/create</td>\n      <td>9</td>\n      <td>1305.52</td>\n      <td>90.12</td>\n      <td>196.61</td>\n      <td>145.0</td>\n      <td>60</td>\n      <td>2018-11-01 00:03:07</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>162943</td>\n      <td>/front-api/bill/create</td>\n      <td>3</td>\n      <td>568.89</td>\n      <td>138.45</td>\n      <td>232.02</td>\n      <td>189.0</td>\n      <td>60</td>\n      <td>2018-11-01 00:04:07</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>162967</td>\n      <td>/front-api/bill/create</td>\n      <td>5</td>\n      <td>521.28</td>\n      <td>80.64</td>\n      <td>126.17</td>\n      <td>104.0</td>\n      <td>60</td>\n      <td>2018-11-01 00:05:07</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "metadata": {},
     "output_type": "execute_result",
     "execution_count": 4
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import pandas as pd\n",
    "logs = pd.read_table('./log.txt',sep='\\t')\n",
    "logs.head()\n",
    "\n",
    "\n"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "outputs": [],
   "source": [
    "logs.columns = ['id','api','count','res_time_sum'\n",
    "                ,'res_time_min','res_time_max'\n",
    "                ,'res_time_avg','interval','created_at']\n"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "outputs": [
    {
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mKeyError\u001b[0m                                  Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-16-9d4ec625557d>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m      1\u001b[0m \u001b[0mlogs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mhead\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0mlogs\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mlogs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mset_index\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'created_at'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      3\u001b[0m \u001b[0mlogs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mhead\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      4\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mc:\\users\\administrator\\pycharmprojects\\untitled\\venv\\lib\\site-packages\\pandas\\core\\frame.py\u001b[0m in \u001b[0;36mset_index\u001b[1;34m(self, keys, drop, append, inplace, verify_integrity)\u001b[0m\n\u001b[0;32m   4409\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   4410\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0mmissing\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 4411\u001b[1;33m             \u001b[1;32mraise\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"None of {} are in the columns\"\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmissing\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   4412\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   4413\u001b[0m         \u001b[1;32mif\u001b[0m \u001b[0minplace\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mKeyError\u001b[0m: \"None of ['created_at'] are in the columns\""
     ],
     "ename": "KeyError",
     "evalue": "\"None of ['created_at'] are in the columns\"",
     "output_type": "error"
    }
   ],
   "source": [
    "logs.head()\n",
    "#将日期设置为索引\n",
    "logs = logs.set_index('created_at')\n",
    "#将表的索引从字符串转为日期格式\n",
    "logs.index = pd.to_datetime(logs.index)\n",
    "logs.index \n",
    "logs.head()"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "outputs": [
    {
     "data": {
      "text/plain": "                         id                     api  count  res_time_sum  \\\ncreated_at                                                                 \n2018-11-01 00:01:07  162644  /front-api/bill/create      5        749.12   \n2018-11-01 00:02:07  162742  /front-api/bill/create      5        845.84   \n2018-11-01 00:03:07  162808  /front-api/bill/create      9       1305.52   \n2018-11-01 00:04:07  162943  /front-api/bill/create      3        568.89   \n2018-11-01 00:05:07  162967  /front-api/bill/create      5        521.28   \n\n                     res_time_min  res_time_max  res_time_avg  \ncreated_at                                                     \n2018-11-01 00:01:07        103.79        240.38         149.0  \n2018-11-01 00:02:07        136.31        225.73         169.0  \n2018-11-01 00:03:07         90.12        196.61         145.0  \n2018-11-01 00:04:07        138.45        232.02         189.0  \n2018-11-01 00:05:07         80.64        126.17         104.0  ",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>id</th>\n      <th>api</th>\n      <th>count</th>\n      <th>res_time_sum</th>\n      <th>res_time_min</th>\n      <th>res_time_max</th>\n      <th>res_time_avg</th>\n    </tr>\n    <tr>\n      <th>created_at</th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>2018-11-01 00:01:07</th>\n      <td>162644</td>\n      <td>/front-api/bill/create</td>\n      <td>5</td>\n      <td>749.12</td>\n      <td>103.79</td>\n      <td>240.38</td>\n      <td>149.0</td>\n    </tr>\n    <tr>\n      <th>2018-11-01 00:02:07</th>\n      <td>162742</td>\n      <td>/front-api/bill/create</td>\n      <td>5</td>\n      <td>845.84</td>\n      <td>136.31</td>\n      <td>225.73</td>\n      <td>169.0</td>\n    </tr>\n    <tr>\n      <th>2018-11-01 00:03:07</th>\n      <td>162808</td>\n      <td>/front-api/bill/create</td>\n      <td>9</td>\n      <td>1305.52</td>\n      <td>90.12</td>\n      <td>196.61</td>\n      <td>145.0</td>\n    </tr>\n    <tr>\n      <th>2018-11-01 00:04:07</th>\n      <td>162943</td>\n      <td>/front-api/bill/create</td>\n      <td>3</td>\n      <td>568.89</td>\n      <td>138.45</td>\n      <td>232.02</td>\n      <td>189.0</td>\n    </tr>\n    <tr>\n      <th>2018-11-01 00:05:07</th>\n      <td>162967</td>\n      <td>/front-api/bill/create</td>\n      <td>5</td>\n      <td>521.28</td>\n      <td>80.64</td>\n      <td>126.17</td>\n      <td>104.0</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "metadata": {},
     "output_type": "execute_result",
     "execution_count": 30
    }
   ],
   "source": [
    "#分析数据，删除无用重复数据\n",
    "#array([60], dtype=int64):intervarl中只有60这一个数据\n",
    "logs.interval.unique()\n",
    "#60    179495   \n",
    "# Name: interval, dtype: int64\n",
    "logs.interval.value_counts()\n",
    "#列intervarl可以删除\n",
    "logs = logs.drop(labels='interval',axis=1)\n",
    "logs.head()"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "outputs": [
    {
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mAttributeError\u001b[0m                            Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-35-8f05aedaac06>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m      1\u001b[0m \u001b[1;31m# /front-api/bill/create    179495\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      2\u001b[0m \u001b[1;31m# Name: api, dtype: int64\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[0mlogs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mapi\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvalue_counts\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      4\u001b[0m \u001b[1;31m#可以判断删除api列\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      5\u001b[0m \u001b[0mlogs\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mlogs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdrop\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mlabels\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'api'\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0maxis\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mc:\\users\\administrator\\pycharmprojects\\untitled\\venv\\lib\\site-packages\\pandas\\core\\generic.py\u001b[0m in \u001b[0;36m__getattr__\u001b[1;34m(self, name)\u001b[0m\n\u001b[0;32m   5177\u001b[0m             \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_info_axis\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_can_hold_identifiers_and_holds_name\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mname\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   5178\u001b[0m                 \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mname\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 5179\u001b[1;33m             \u001b[1;32mreturn\u001b[0m \u001b[0mobject\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__getattribute__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mname\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m   5180\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m   5181\u001b[0m     \u001b[1;32mdef\u001b[0m \u001b[0m__setattr__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mname\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mvalue\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mAttributeError\u001b[0m: 'DataFrame' object has no attribute 'api'"
     ],
     "ename": "AttributeError",
     "evalue": "'DataFrame' object has no attribute 'api'",
     "output_type": "error"
    }
   ],
   "source": [
    "# /front-api/bill/create    179495\n",
    "# Name: api, dtype: int64\n",
    "logs.api.value_counts()\n",
    "#可以判断删除api列\n",
    "logs = logs.drop(labels='api',axis=1)\n",
    "logs.head()"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 132,
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 432x288 with 1 Axes>",
      "image/png": "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\n"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": "<Figure size 432x288 with 1 Axes>",
      "image/png": "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\n"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# logs.head()\n",
    "# logs.info()\n",
    "#分析每一天的数据\n",
    "#访问次数大都在12—13次\n",
    "# logs[['count']].hist()\n",
    "# logs[['count']].boxplot()\n",
    "data = logs['2019-05-01'][['count']]\n",
    "plt.subplot(2,1,1)\n",
    "data.boxplot()\n",
    "#通过分析折线图发现访问高峰在13-14，20-22点之间\n",
    "#凌晨3：00-10：00访问次数在5次以下\n",
    "data.plot()\n",
    "# plt.subplot(2,1,2)\n",
    "plt.show()\n",
    "\n",
    "# plt.show()"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 159,
   "outputs": [
    {
     "traceback": [
      "\u001b[1;36m  File \u001b[1;32m\"<ipython-input-159-9d4668a09379>\"\u001b[1;36m, line \u001b[1;32m4\u001b[0m\n\u001b[1;33m    logs.plot({kind ='pie',x= logs.index,y = logs.count})\u001b[0m\n\u001b[1;37m                    ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m invalid syntax\n"
     ],
     "ename": "SyntaxError",
     "evalue": "invalid syntax (<ipython-input-159-9d4668a09379>, line 4)",
     "output_type": "error"
    }
   ],
   "source": [
    "#通过箱图可以看出大于18次的是异常数据，取出异常数据\n",
    "# logs.query('count>21')\n",
    "# logs.query('count>21').hist()\n",
    "# logs.plot(kind ='pie',x= logs.index,y = logs.count)\n",
    "plt.show()\n"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 157,
   "outputs": [
    {
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mValueError\u001b[0m                                Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-157-8f8e57d1eb1b>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m      3\u001b[0m \u001b[1;31m#以每天的平均数重新采样\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      4\u001b[0m \u001b[0mlog_d\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mlogs\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'count'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mresample\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'1D'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmean\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 5\u001b[1;33m \u001b[0mlog_d\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkind\u001b[0m \u001b[1;33m=\u001b[0m\u001b[1;34m'pie'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m      6\u001b[0m \u001b[0mplt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mxticks\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mrotation\u001b[0m \u001b[1;33m=\u001b[0m\u001b[1;36m60\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m      7\u001b[0m \u001b[1;31m#从折线图可以看出总体访问次数维持在7次左右，2月中旬跌入谷底（过年）\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;32mc:\\users\\administrator\\pycharmprojects\\untitled\\venv\\lib\\site-packages\\pandas\\plotting\\_core.py\u001b[0m in \u001b[0;36m__call__\u001b[1;34m(self, *args, **kwargs)\u001b[0m\n\u001b[0;32m    745\u001b[0m                 \u001b[1;32mif\u001b[0m \u001b[0my\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mNone\u001b[0m \u001b[1;32mand\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"subplots\"\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mFalse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    746\u001b[0m                     \u001b[0mmsg\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;34m\"{} requires either y column or 'subplots=True'\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 747\u001b[1;33m                     \u001b[1;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mkind\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    748\u001b[0m                 \u001b[1;32melif\u001b[0m \u001b[0my\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    749\u001b[0m                     \u001b[1;32mif\u001b[0m \u001b[0mis_integer\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mand\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mdata\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mholds_integer\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
      "\u001b[1;31mValueError\u001b[0m: pie requires either y column or 'subplots=True'"
     ],
     "ename": "ValueError",
     "evalue": "pie requires either y column or 'subplots=True'",
     "output_type": "error"
    }
   ],
   "source": [
    "# logs['2019-5-1':'2019-5-20'][['count']].mean().hist()\n",
    "# plt.show()\n",
    "#以每天的平均数重新采样\n",
    "log_d = logs[['count']].resample('1D').mean()\n",
    "log_d.plot()\n",
    "plt.xticks(rotation =60)\n",
    "#从折线图可以看出总体访问次数维持在7次左右，2月中旬跌入谷底（过年）\n",
    "plt.show()\n"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 160,
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 432x288 with 1 Axes>",
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXAAAAD4CAYAAAD1jb0+AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAMB0lEQVR4nO3db6xk9V3H8ffHLo0srv3jtqOWym2NIU1RU50HKkanRRoSmtIHjYFYxUJyn5XWf+1WYogPTDAatY0PzJUia4uYSGtqeu0GQnckVaThb4FuYxPd4rboQoiVi8RC/fpgB12vuzv/zpnLb+/7lWx27pkz8/ve5PDew7kzd1JVSJLa8207PYAkaTEGXJIaZcAlqVEGXJIaZcAlqVF7VrnY/v37a21tbZVLSjN59tlnOe+883Z6DOmU7r///qeq6jXbt6804Gtra9x3332rXFKayXg8ZjQa7fQY0ikl+eqptnsJRZIaZcAlqVEGXJIaZcAlqVEGXJIaZcAlqVEGXJIaZcAlqVErfSOPtCpJVrKOv09fO8kzcJ2VqmquPxd86DNzP8Z4a6cZcElqlAGXpEYZcElqlAGXpEYZcElqlAGXpEYZcElqlAGXpEYZcElqlAGXpEYZcElqlAGXpEYZcElq1NSAJ7k5yfEkj57ivl9NUkn29zOeJOl0ZjkDvwW4bPvGJK8HLgUe73gmSdIMpga8qu4Gnj7FXb8PfBDwlyJL0g5Y6BN5krwT+FpVPTztk0+SrAPrAIPBgPF4vMiSUu88NtWauQOeZC9wPfD2Wfavqg1gA2A4HNZoNJp3Sal/hzbx2FRrFnkVyvcDbwAeTnIUOB94IMl3dzmYJOnM5j4Dr6pHgNe++PUk4sOqeqrDuSRJU8zyMsLbgHuAC5McS3Jt/2NJkqaZegZeVVdNuX+ts2kkSTPznZiS1CgDLkmNMuCS1CgDLkmNMuCS1CgDLkmNMuCS1CgDLkmNMuCS1CgDLkmNMuCS1CgDLkmNMuCS1CgDLkmNMuCS1CgDLkmNMuCS1CgDLkmNmuUzMW9OcjzJoydt+50kX07yxSR/meSV/Y4pSdpuljPwW4DLtm27E7ioqn4I+Afgwx3PJUmaYmrAq+pu4Olt2+6oqhcmX/49cH4Ps0mSzqCLa+DXAJ/t4HkkSXPYs8yDk1wPvADceoZ91oF1gMFgwHg8XmZJqTcem2rNwgFPcjXwDuCSqqrT7VdVG8AGwHA4rNFotOiSUn8ObeKxqdYsFPAklwEfAn66qv6j25EkSbOY5WWEtwH3ABcmOZbkWuAPgX3AnUkeSvJHPc8pSdpm6hl4VV11is0f62EWSdIcfCemJDXKgEtSowy4JDXKgEtSowy4JDXKgEtSowy4JDXKgEtSowy4JDXKgEtSowy4JDXKgEtSowy4JDXKgEtSowy4JDXKgEtSowy4JDXKgEtSowy4JDVqlg81vjnJ8SSPnrTt1UnuTPKVyd+v6ndMSdJ2s5yB3wJctm3bAeCuqvoB4K7J15KkFZoa8Kq6G3h62+YrgIOT2weBd3U8lyRpij0LPm5QVU8AVNUTSV57uh2TrAPrAIPBgPF4vOCSUr88NtWaRQM+s6raADYAhsNhjUajvpeU5ndoE49NtWbRV6H8a5LvAZj8fby7kSRJs1g04H8FXD25fTXw6W7GkSTNapaXEd4G3ANcmORYkmuBG4FLk3wFuHTytSRphaZeA6+qq05z1yUdzyJJmoPvxJSkRhlwSWqUAZekRhlwSWqUAZekRhlwSWqUAZekRhlwSWqUAZekRhlwSWqUAZekRvX++8ClZf3wb97BN557vvd11g5s9vr8rzj3HB6+4e29rqHdxYDrJe8bzz3P0Rsv73WN8Xjc+wc69P0PhHYfL6FIUqMMuCQ1yoBLUqMMuCQ1yoBLUqMMuCQ1aqmAJ/mlJI8leTTJbUm+vavBJElntnDAk7wOuA4YVtVFwMuAK7saTJJ0ZsteQtkDnJtkD7AX+PryI0mSZrHwOzGr6mtJfhd4HHgOuKOq7ti+X5J1YB1gMBgwHo8XXVK7WN/HzdbW1kqOTY9/dWnhgCd5FXAF8Abg34C/SPKeqvrEyftV1QawATAcDqvvtyvrLHRos/e3ua/irfSr+D60uyxzCeVngH+qqier6nngU8BPdDOWJGmaZQL+OPBjSfYmCXAJcKSbsSRJ0ywc8Kq6F7gdeAB4ZPJcGx3NJUmaYqlfJ1tVNwA3dDSLJGkOvhNTkhplwCWpUQZckhplwCWpUQZckhplwCWpUQZckhplwCWpUQZckhplwCWpUQZckhplwCWpUQZckhplwCWpUQZckhplwCWpUQZckhq11CfySKuw700H+MGDB/pf6GC/T7/vTQCX97uIdpWlAp7klcBNwEVAAddU1T1dDCa96JkjN3L0xn7DNx6PGY1Gva6xdmCz1+fX7rPsGfhHgENV9e4kLwf2djCTJGkGCwc8yXcCPwX8IkBVfRP4ZjdjSZKmWeaHmG8EngT+JMmDSW5Kcl5Hc0mSpljmEsoe4EeA91XVvUk+AhwAfuPknZKsA+sAg8GA8Xi8xJLarfo+bra2tlZybHr8q0vLBPwYcKyq7p18fTsnAv5/VNUGsAEwHA6r7x8U6Sx0aLP3HzCu4oeYq/g+tLssfAmlqv4F+OckF042XQJ8qZOpJElTLfsqlPcBt05egfKPwHuXH0mSNIulAl5VDwHDjmaRJM3Bt9JLUqMMuCQ1yoBLUqMMuCQ1yoBLUqMMuCQ1yoBLUqMMuCQ1yoBLUqMMuCQ1yoBLUqMMuCQ1yoBLUqMMuCQ1yoBLUqMMuCQ1yoBLUqMMuCQ1yoBLUqOWDniSlyV5MMlnuhhIkjSbLs7A3w8c6eB5JElzWCrgSc4HLgdu6mYcSdKs9iz5+D8APgjsO90OSdaBdYDBYMB4PF5ySe1GfR83W1tbKzk2Pf7VpYUDnuQdwPGquj/J6HT7VdUGsAEwHA5rNDrtrtKpHdqk7+NmPB73vsYqvg/tLstcQrkYeGeSo8CfA29L8olOppIkTbVwwKvqw1V1flWtAVcCn6uq93Q2mSTpjHwduCQ1atkfYgJQVWNg3MVzSZJm4xm4JDXKgEtSowy4JDXKgEtSowy4JDXKgEtSowy4JDXKgEtSowy4JDXKgEtSowy4JDXKgEtSowy4JDXKgEtSowy4JDXKgEtSowy4JDXKgEtSowy4JDVq4YAneX2Sw0mOJHksyfu7HEySdGbLfKjxC8CvVNUDSfYB9ye5s6q+1NFskqQzWPgMvKqeqKoHJrefAY4Ar+tqMEnSmS1zBv4/kqwBbwHuPcV968A6wGAwYDwed7Gkdpm+j5utra2VHJse/+rS0gFP8h3AJ4EPVNW/b7+/qjaADYDhcFij0WjZJbXbHNqk7+NmPB73vsYqvg/tLku9CiXJOZyI961V9aluRpIkzWLhM/AkAT4GHKmq3+tuJOn/Wzuw2f8ih/pd4xXnntPr82v3WeYSysXAzwOPJHlosu3Xq+qvlx9L+l9Hb7y89zXWDmyuZB2pSwsHvKo+D6TDWSRJc/CdmJLUKAMuSY0y4JLUKAMuSY0y4JLUKAMuSY0y4JLUKAMuSY3q5LcRSi81J37Tw5yP+e3516mq+R8kdcQzcJ2VqmquP4cPH577McZbO82AS1KjDLgkNcqAS1KjDLgkNcqAS1KjDLgkNcqAS1KjDLgkNSqrfDNCkieBr65sQWl2+4GndnoI6TQuqKrXbN+40oBLL1VJ7quq4U7PIc3DSyiS1CgDLkmNMuDSCRs7PYA0L6+BS1KjPAOXpEYZcElqlAGX5pTkA0n27vQcktfApTklOQoMq8o3/mhHeQaus1KSX0jyxSQPJ/l4kguS3DXZdleS75vsd0uSd5/0uK3J36Mk4yS3J/lykltzwnXA9wKHkxzeme9OOsEPNdZZJ8mbgeuBi6vqqSSvBg4Cf1pVB5NcA3wUeNeUp3oL8Gbg68DfTp7vo0l+GXirZ+DaaZ6B62z0NuD2FwNbVU8DPw782eT+jwM/OcPzfKGqjlXVfwEPAWs9zCotzIDrbBRg2g93Xrz/BSb/HSQJ8PKT9vnPk25/C/+PVS8xBlxno7uAn03yXQCTSyh/B1w5uf/ngM9Pbh8FfnRy+wrgnBme/xlgX1fDSovyjEJnnap6LMlvAX+T5FvAg8B1wM1Jfg14EnjvZPc/Bj6d5AucCP+zMyyxAXw2yRNV9dbuvwNpNr6MUJIa5SUUSWqUAZekRhlwSWqUAZekRhlwSWqUAZekRhlwSWrUfwODAhJJCmgEVgAAAABJRU5ErkJggg==\n"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "log_h=logs[['count']].resample('1H').mean()\n",
    "# log_h.plot()\n",
    "log_h.boxplot()\n",
    "plt.show()\n"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 198,
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 432x288 with 1 Axes>",
      "image/png": "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\n"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "text": [
      "res_time_avg    71325.0\ndtype: float64\n"
     ],
     "output_type": "stream"
    },
    {
     "data": {
      "text/plain": "                           id  count  res_time_sum  res_time_min  \\\ncreated_at                                                         \n2019-03-01 20:33:42   7480534      7      83667.58       2376.46   \n2019-03-25 14:42:10   8956594     10     140691.03        109.77   \n2019-01-28 17:54:45   5897714      3      44068.25       5872.03   \n2019-04-15 12:07:32  10329399      1      18896.64      18896.64   \n2019-03-25 14:50:10   8957159      2     142650.55        182.28   \n\n                     res_time_max  res_time_avg  \ncreated_at                                       \n2019-03-01 20:33:42      28236.13       11952.0  \n2019-03-25 14:42:10     101779.53       14069.0  \n2019-01-28 17:54:45      24626.21       14689.0  \n2019-04-15 12:07:32      18896.64       18896.0  \n2019-03-25 14:50:10     142468.27       71325.0  ",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>id</th>\n      <th>count</th>\n      <th>res_time_sum</th>\n      <th>res_time_min</th>\n      <th>res_time_max</th>\n      <th>res_time_avg</th>\n    </tr>\n    <tr>\n      <th>created_at</th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>2019-03-01 20:33:42</th>\n      <td>7480534</td>\n      <td>7</td>\n      <td>83667.58</td>\n      <td>2376.46</td>\n      <td>28236.13</td>\n      <td>11952.0</td>\n    </tr>\n    <tr>\n      <th>2019-03-25 14:42:10</th>\n      <td>8956594</td>\n      <td>10</td>\n      <td>140691.03</td>\n      <td>109.77</td>\n      <td>101779.53</td>\n      <td>14069.0</td>\n    </tr>\n    <tr>\n      <th>2019-01-28 17:54:45</th>\n      <td>5897714</td>\n      <td>3</td>\n      <td>44068.25</td>\n      <td>5872.03</td>\n      <td>24626.21</td>\n      <td>14689.0</td>\n    </tr>\n    <tr>\n      <th>2019-04-15 12:07:32</th>\n      <td>10329399</td>\n      <td>1</td>\n      <td>18896.64</td>\n      <td>18896.64</td>\n      <td>18896.64</td>\n      <td>18896.0</td>\n    </tr>\n    <tr>\n      <th>2019-03-25 14:50:10</th>\n      <td>8957159</td>\n      <td>2</td>\n      <td>142650.55</td>\n      <td>182.28</td>\n      <td>142468.27</td>\n      <td>71325.0</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "metadata": {},
     "output_type": "execute_result",
     "execution_count": 198
    }
   ],
   "source": [
    "# res_time_sum 响应时间总和(毫秒) \n",
    "# res_time_min 最小响应时间 \n",
    "# res_time_max 最大响应时间 \n",
    "# res_time_avg 平均值 \n",
    "#通过箱图分析服务器的响应时间\n",
    "# plt.boxplot(logs['2019-05-01'].res_time_avg)\n",
    "# logs.res_time_avg.plot()\n",
    "#通过整体分析发现2,3,4,5 出现了几个高峰\n",
    "#具体查看这几个月的数据\n",
    "#以小时重新采样\n",
    "log_time_h = logs[['res_time_avg']].resample('1h').mean()\n",
    "# log_time_h['2019-03'].plot()\n",
    "#发现3月24，25这天异常\n",
    "data = logs['2019-03-25']\n",
    "data1 = data[['res_time_avg']].resample('1T').mean()\n",
    "data1.plot()\n",
    "plt.show()\n",
    "print(data1.max())\n",
    "#2019-03-25 14:50:10\t8957159\t2\t142650.55\t182.28\t142468.27\t71325.0\n",
    "logs.query('res_time_avg ==71325.0')\n"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 205,
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 432x288 with 1 Axes>",
      "image/png": "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\n"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": "                           id  count  res_time_sum  res_time_min  \\\ncreated_at                                                         \n2018-11-24 20:26:54   1980908     10      58836.12        101.04   \n2019-04-30 14:57:48  11364689      9      70844.77        722.03   \n2019-03-01 20:33:42   7480534      7      83667.58       2376.46   \n2019-01-28 18:00:45   5897998      3      35072.15       1048.79   \n2019-03-25 16:04:10   8962772     12      39515.03        122.29   \n2019-03-25 14:54:10   8957431     14      98133.32        203.07   \n2019-03-25 14:44:10   8956733     14      60739.26        100.39   \n2019-03-25 14:51:10   8957199     13      86107.68         86.02   \n2019-03-25 14:42:10   8956594     10     140691.03        109.77   \n2019-03-25 14:50:10   8957159      2     142650.55        182.28   \n\n                     res_time_max  res_time_avg  \ncreated_at                                       \n2018-11-24 20:26:54      24759.11        5883.0  \n2019-04-30 14:57:48      25277.43        7871.0  \n2019-03-01 20:33:42      28236.13       11952.0  \n2019-01-28 18:00:45      32968.91       11690.0  \n2019-03-25 16:04:10      36396.93        3292.0  \n2019-03-25 14:54:10      48026.13        7009.0  \n2019-03-25 14:44:10      58538.32        4338.0  \n2019-03-25 14:51:10      79317.36        6623.0  \n2019-03-25 14:42:10     101779.53       14069.0  \n2019-03-25 14:50:10     142468.27       71325.0  ",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>id</th>\n      <th>count</th>\n      <th>res_time_sum</th>\n      <th>res_time_min</th>\n      <th>res_time_max</th>\n      <th>res_time_avg</th>\n    </tr>\n    <tr>\n      <th>created_at</th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>2018-11-24 20:26:54</th>\n      <td>1980908</td>\n      <td>10</td>\n      <td>58836.12</td>\n      <td>101.04</td>\n      <td>24759.11</td>\n      <td>5883.0</td>\n    </tr>\n    <tr>\n      <th>2019-04-30 14:57:48</th>\n      <td>11364689</td>\n      <td>9</td>\n      <td>70844.77</td>\n      <td>722.03</td>\n      <td>25277.43</td>\n      <td>7871.0</td>\n    </tr>\n    <tr>\n      <th>2019-03-01 20:33:42</th>\n      <td>7480534</td>\n      <td>7</td>\n      <td>83667.58</td>\n      <td>2376.46</td>\n      <td>28236.13</td>\n      <td>11952.0</td>\n    </tr>\n    <tr>\n      <th>2019-01-28 18:00:45</th>\n      <td>5897998</td>\n      <td>3</td>\n      <td>35072.15</td>\n      <td>1048.79</td>\n      <td>32968.91</td>\n      <td>11690.0</td>\n    </tr>\n    <tr>\n      <th>2019-03-25 16:04:10</th>\n      <td>8962772</td>\n      <td>12</td>\n      <td>39515.03</td>\n      <td>122.29</td>\n      <td>36396.93</td>\n      <td>3292.0</td>\n    </tr>\n    <tr>\n      <th>2019-03-25 14:54:10</th>\n      <td>8957431</td>\n      <td>14</td>\n      <td>98133.32</td>\n      <td>203.07</td>\n      <td>48026.13</td>\n      <td>7009.0</td>\n    </tr>\n    <tr>\n      <th>2019-03-25 14:44:10</th>\n      <td>8956733</td>\n      <td>14</td>\n      <td>60739.26</td>\n      <td>100.39</td>\n      <td>58538.32</td>\n      <td>4338.0</td>\n    </tr>\n    <tr>\n      <th>2019-03-25 14:51:10</th>\n      <td>8957199</td>\n      <td>13</td>\n      <td>86107.68</td>\n      <td>86.02</td>\n      <td>79317.36</td>\n      <td>6623.0</td>\n    </tr>\n    <tr>\n      <th>2019-03-25 14:42:10</th>\n      <td>8956594</td>\n      <td>10</td>\n      <td>140691.03</td>\n      <td>109.77</td>\n      <td>101779.53</td>\n      <td>14069.0</td>\n    </tr>\n    <tr>\n      <th>2019-03-25 14:50:10</th>\n      <td>8957159</td>\n      <td>2</td>\n      <td>142650.55</td>\n      <td>182.28</td>\n      <td>142468.27</td>\n      <td>71325.0</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "metadata": {},
     "output_type": "execute_result",
     "execution_count": 205
    }
   ],
   "source": [
    "#将平均时间排序取最后的几条数据分析\n",
    "logs.sort_values('res_time_avg').tail(5)\n",
    "data_outtime = logs.sort_values('res_time_max').tail(1000)\n",
    "#将最大响应时间的最大1000条重新采样\n",
    "data_outtime_h = data_outtime[['res_time_max']].resample('1h').mean()\n",
    "data_outtime_h.plot()\n",
    "plt.show()\n",
    "#可以看到集中在3月以后，在3月下旬达到最高\n",
    "logs.sort_values('res_time_max').tail(10)\n",
    "#发现最高的5条都出现在3-25的14：40—14：50之间\n",
    "\n",
    "\n"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 232,
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 432x288 with 1 Axes>",
      "image/png": "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\n"
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#分析周末与工作时间的访问次数的区别\n",
    "logs['weekday'] = logs.index.weekday\n",
    "# 设置工作时间和周末的true和false\n",
    "logs['weekday'] = logs['weekday'].isin({5,6})\n",
    "logs_week = logs.groupby(['weekday',logs.index.hour])['count'].mean()\n",
    "logs_week.unstack(level=0).plot()\n",
    "plt.show()"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  },
  "pycharm": {
   "stem_cell": {
    "cell_type": "raw",
    "source": [],
    "metadata": {
     "collapsed": false
    }
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}